<?php
class Logs {

    private $codigo;
    private $codusuario;
    private $acao;
    private $datahora;
    private $ip;

    function __construct($codigo=null, $codusuario=null, $acao=null, $datahora=null, $ip=null) {
        if($codigo === null){
            $this->setAtributos(0,0,'','','');
        }else if( ($codigo !== null) && ($codusuario === null) ){
            $this->Carrega($codigo);
        }else{
            $this->setAtributos($codigo,$codusuario,$acao,$datahora,$ip);
        }
    }
    
    public function setAtributos($codigo=null, $codusuario=null, $acao=null, $datahora=null, $ip=null){
        $this->setCodigo($codigo)
            ->setCodusuario($codusuario)
            ->setAcao($acao)
            ->setDatahora($datahora)
            ->setIp($ip);            
    }
    
    public function Carrega($codigo){
        $conn = new DB_Config();
        $query = ("
            SELECT 
                codigo,
                codusuario,
                acao,
                datahora,
                ip
            FROM 
                logs
            WHERE
                codigo = '$codigo'
        ");
        list($codigo,$codusuario,$acao,$datahora,$ip) = $conn->Query($query)->FetchRow();
        $this->setAtributos($codigo,$codusuario,$acao,$datahora,$ip);
    }

    public function getCodigo() {
        return $this->codigo;
    }

    public function setCodigo($codigo) {
        $this->codigo = $codigo;
        return $this;
    }

    public function getCodusuario() {
        return $this->codusuario;
    }

    public function setCodusuario($codusuario) {
        $this->codusuario = $codusuario;
        return $this;
    }

    public function getAcao() {
        return $this->acao;
    }

    public function setAcao($acao) {
        $this->acao = $acao;
        return $this;
    }

    public function getDatahora() {
        return $this->datahora;
    }

    public function setDatahora($datahora) {
        $this->datahora = $datahora;
        return $this;
    }

    public function getIp() {
        return $this->ip;
    }

    public function setIp($ip) {
        $this->ip = $ip;
        return $this;
    }

    public function Insere_logs() {
        $ip = $_SERVER["REMOTE_ADDR"];
        $datahora = date("Y-m-d H:i:s");
        $conn = new DB_Config();
        $query = ("INSERT INTO logs SET codusuario='".$this->codusuario."',acao='".$this->acao."',datahora='$datahora',ip='$ip'");
        if (!$conn->Query($query)) {
            throw new Exception("Erro ao inserir logs!");
        }
    }

    public function Deleta_logs() {

        $conn = new DB_Config();

        if (($this->codigo) != '') {

            $query = ("DELETE FROM logs WHERE codigo = " . $this->codigo . "");
            if ($conn->Query($query)) {
                echo "log deletado";
            } else {
                throw new Exception("erro ao deletar unico log");
            }
        } else {
            $query = ("DELETE FROM logs ");
            if ($conn->Query($query)) {
                echo "logs deletados";
            } else {
                throw new Exception("erro ao deletar  logs");
            }
        }
    }

    public static function Listalogs($extra=null) {
        $conn = new DB_Config();        
        $query = ("SELECT codigo FROM logs ".$extra);
        $lista = '';
        
        if($conn->Query($query)){
            $resultado = $conn->Query($query);
            while($dados = $resultado->FetchObject()){
                $lista[] = new Logs($dados->codigo);
            }
            return $lista;
        }
    }

}

?>
